<?php
/**
 * Считалка посетителей.
 *
 * Объекты можно посещать.
 * Посещать могут объекты.
 * Интересует время визита.
 *
 * Этот мир определяется триадой: (who_oid, what_oid, datetime)
 * где who_oid -- кто посетил
 *    what_oid -- кого/что посетил
 *    datetime -- когда посетил
 *
 * @package default
 * @author lucky
 **/
$this->useClass('RL_Model2');

class Model_Visitable extends RL_Model2
{
	var $who;
	var $what;

	public function visit ($visitable)
	{
		$who = $this->getWho();
		$what = $visitable->getWhat();
		$ts = time();

		$m_visit = $this->mm->getModel('Visit', 'm');
		$m_visit->visit($who, $what, $ts);
	} // end of method visit
	public function getVisitable ($type)
	{
		$o = false;

		$class = "Visitable_{$type}";
		if ($this->useClass($class)) {
			$o = new $class($this);
		}

		return $o;
	} // end of method getVisitable

	public function getWho ()
	{
		if (!isset($this->who)) {
			$profile = $this->mm->rh->ctx->principal->getProfile();
			$this->who = $this->mm->rh->ctx->store->getObject($profile['user_id']);
		}
		return $this->who;
	} // end of method getWho

	public function getCurrentCommunity ()
	{
		return $this->mm->aa->acl_data['comity_oid'];
	} // end of method getCurrentCommunity
	public function getCurrentTdi ()
	{
		return $this->mm->aa->acl_data['tdi_oid'];
	} // end of method getCurrentCommunity

	public function useClass ($class)
	{
		return $this->mm->rh->useClass($class);
	} // end of method useClass
} // END class
